package org.example.video.pojo;

import lombok.Data;
import org.springframework.data.domain.Page;

import java.util.List;

/**
 * 通用分页响应对象
 * @param <T> 数据类型
 */
@Data
public class PageResult<T> {
    /**
     * 当前页数据
     */
    private List<T> list;

    /**
     * 总记录数
     */
    private long total;

    /**
     * 总页数
     */
    private int pages;

    /**
     * 当前页码（从1开始）
     */
    private int currentPage;

    /**
     * 每页大小
     */
    private int size;

    /**
     * 将 Spring Data 的 Page 对象转换为自定义分页对象
     */
    public static <T> PageResult<T> of(Page<T> page) {
        PageResult<T> result = new PageResult<>();
        result.setList(page.getContent());
        result.setTotal(page.getTotalElements());
        result.setPages(page.getTotalPages());
        result.setCurrentPage(page.getNumber() + 1); // 转换为从1开始的页码
        result.setSize(page.getSize());
        return result;
    }
}